namespace glf {

class SyncEvent
	: private NonCopyable
#if GLF_DEBUG
	, public SyncEventConcept
#endif
{
public:

	SyncEvent();
	SyncEvent(DeferEvent);
	~SyncEvent();

	void Init();

	void Signal();
	void Set();
	void Reset();
	bool Wait(unsigned long duration = 0);

private:

	enum
	{
		SIGNAL,
		RELEASE,
		MAX_EVENTS
	};

	void* m_Event[MAX_EVENTS];
	bool m_Initialized;

};

} // namespace glf
